﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Teenusekiht;
using System.ServiceModel;

public partial class Kohvik_Kasutaja : System.Web.UI.Page
{
    IService1 sc;
    List<DropDownList> listid = new List<DropDownList>();
    List<SiteKasutaja> kyik_kasutajad = new List<SiteKasutaja>();
    List<SiteKasutaja> lubatudsiterollid = new List<SiteKasutaja>();
    List<CheckBox> checkboxid = new List<CheckBox>();
    List<KohvikuKasutajaRoll> lubatudKohvikukasutajarollid = new List<KohvikuKasutajaRoll>();
    Table table ;
    int kasutajaID = 1, teade;

    protected void Page_Load(object sender, EventArgs e)
    {
        sc = new ChannelFactory<IService1>("Serv").CreateChannel();

        if (Request.QueryString["user"] == null) //Response.Redirect("~/Default.aspx");
        {
            if (Session["sess"] == null) Session["sess"] = SessionStatic.CreateSession();
            SessionData sesDat = SessionStatic.GetData((int)Session["sess"]);
            if (sesDat.UserId == null) LblTeade.Text = "Kasutajate haldamiseks logi sisse.";// Response.Redirect("~/Default.aspx");
            else kasutajaID = (int) sesDat.UserId;
        }
        else if (int.TryParse(Request.QueryString["user"], out kasutajaID)) { }
        else Response.Redirect("~/Default.aspx");

        if (Request.QueryString["teade"] != null) {
            if (int.TryParse(Request.QueryString["teade"], out teade))
            {
                //LblTeade.Visible = true;
                switch (teade)
                {
                    case 1:
                        LblTeade.Text = "Andmed saadeti edukalt teele. Muutuste salvestamine õnnestus";
                        break;
                    case 2:
                        LblTeade.Text = "Muutuste salvestamine ebaõnnestus, keegi on vahepeal asju kustutanud või lisanud";
                        break;
                    case 3:
                        LblTeade.Text = "Andmed saadeti edukalt teele kuid muutuste salvestamine ebaõnnestus";
                        break;
                }
            }   
        }

        string nimi = sc.AnnaKasutajaIdJargi(kasutajaID, Rakendus.RAKENDUSE_KOOD);
        if (nimi != "")
        {
            Page.Title += nimi;
            lblKasutajaNimi.Text = "Kasutaja: " + nimi;
        }

        if (nimi == "Anonymous") LblTeade.Text = "Kasutajate haldamiseks logi sisse.";
        else
        {
            ph_kasutajateMuutmine.Visible = true;
            table = new Table() { GridLines = GridLines.Both };//test
            //if(!IsPostBack)getAllKasutajas(kasutajaID);
            getAllKasutajas(kasutajaID);
        }

    }

    protected void getAllKasutajas(int kasutajaID)
    {
        //test// Table table = new Table() { GridLines = GridLines.Both };

        TableRow r = new TableRow();
        TableCell c = new TableCell();
        c.Controls.Add(new LiteralControl("<b>Nimi</b>"));
        r.Cells.Add(c);
        c = new TableCell();
        c.Controls.Add(new LiteralControl("<b>Tyyp</b>"));
        r.Cells.Add(c);
        c = new TableCell();
        c.Controls.Add(new LiteralControl("<b>Kustuta</b>"));
        r.Cells.Add(c);
        table.Rows.Add(r);

        string userRole = sc.SaidiKasutajaLiik(kasutajaID, Rakendus.RAKENDUSE_KOOD);
        bool lubatud = false;
        lubatudsiterollid = sc.KoikLubatudSaidiKasutajaTyybid(Rakendus.RAKENDUSE_KOOD).ToList();
        lubatudKohvikukasutajarollid = sc.KoikLubatudKohvikuRollid(Rakendus.RAKENDUSE_KOOD).ToList();

        switch (userRole)
        {
            case "Admin":
                lubatud = true;
                kyik_kasutajad = sc.AnnaKoikSaidiKasutajad(Rakendus.RAKENDUSE_KOOD).ToList();
                break;
            case "Omanik":
                lubatud = true;
                // vaatame milliste kohvikute omanik ta on, kui tal on kohvikuid, siis iga kohviku kohta vytame kyik kohvikukasutajaid
                int[] kohvikute_IDs = sc.AnnaKoikOmanikuKohvikud(kasutajaID, Rakendus.RAKENDUSE_KOOD);
                // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + kohvikute_IDs.Length + "\")</SCRIPT>"));
                foreach (int kohviku_id in kohvikute_IDs) {
                    kyik_kasutajad.AddRange(sc.AnnaKoikKohvikuKasutajad(kohviku_id, Rakendus.RAKENDUSE_KOOD).ToList());
                }
                // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" +kyik_kasutajad.Count + "\")</SCRIPT>"));
                break;

                default:
                        // Console.WriteLine("Tundmatu privileegideta kasutajatüüp");
                break;
        }


        foreach (SiteKasutaja siteKasutaja in kyik_kasutajad)
        {
            DropDownList uusList = new DropDownList();
            listid.Add(uusList);

            switch (userRole)
            {
                case "Admin":
                    // uusList.Items.Add(new ListItem(siteKasutaja.Kasutaja_Liik_Nimi,"1"));

                    foreach (SiteKasutaja kasutajaRoll in lubatudsiterollid)
                    {
                        uusList.Items.Add(new ListItem(kasutajaRoll.Kasutaja_Liik_Nimi, kasutajaRoll.Kasutaja_liik_ID.ToString()));
                        if (siteKasutaja.Kasutaja_Liik_Nimi == kasutajaRoll.Kasutaja_Liik_Nimi)
                        {
                            uusList.SelectedValue = kasutajaRoll.Kasutaja_liik_ID.ToString();
                        }
                    }
                    break;

                case "Omanik":

                    foreach (KohvikuKasutajaRoll kohvikuRoll in lubatudKohvikukasutajarollid)
                    {
                        uusList.Items.Add(new ListItem(kohvikuRoll.Roll_Nimetus, kohvikuRoll.Roll_ID.ToString()));
                        if (siteKasutaja.KohvikuKasutajaRollid[0].Roll_Nimetus == kohvikuRoll.Roll_Nimetus)
                        {
                            uusList.SelectedValue = kohvikuRoll.Roll_ID.ToString();
                        }
                    }
                    /*
                    uusList.Items.Add(new ListItem("Müüja", "1"));
                    uusList.Items.Add(new ListItem("Püsiklient", "2"));
                    uusList.Items.Add(new ListItem("Omanik", "3"));
                    uusList.Items.Add(new ListItem("Blokeeritud", "4"));
                    */
                    break;
            }

            if (lubatud) 
            {
                r = new TableRow();
                c = new TableCell();
                c.Controls.Add(new LiteralControl(siteKasutaja.Nimi));
                r.Cells.Add(c);

                c = new TableCell();
                c.Controls.Add(uusList);
                r.Cells.Add(c);

                c = new TableCell();
                CheckBox uusCheckBox = new CheckBox();
                checkboxid.Add(uusCheckBox);
                c.Controls.Add(uusCheckBox);
                r.Cells.Add(c);
                table.Rows.Add(r);
            }
           
        }

        ph_Kasutajad.Controls.Add(table);
    }

    protected void nuppSisestaKasutajateAndmed_Click(object sender, EventArgs e)
    {
        // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + lubatudsiterollid.Count + "\")</SCRIPT>"));
        // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + lubatudsiterollid.Count + "\")</SCRIPT>"));
       // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + kyik_kasutajad.Count + "\")</SCRIPT>"));
       // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + lubatudsiterollid[1].Kasutaja_liik_ID + "  " + lubatudsiterollid[1].Kasutaja_Liik_Nimi + "\")</SCRIPT>"));

/*        TableRow r ;
        TableCell c ;
        int arv = int.Parse (hfArv.Value);
        for (int i = 0; i <= arv; i++)
        {
            r = new TableRow();
            c = new TableCell();
            r.Cells.Add(c);
            c = new TableCell();
            r.Cells.Add(c);
            c = new TableCell();
            r.Cells.Add(c);
            table.Rows.Add(r);
        }

        System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + table.Rows[0].Cells[0].Text + "\")</SCRIPT>"));*/

        int arv = int.Parse(hfArv.Value);
        if (arv == kyik_kasutajad.Count)
        {

            string userRole = sc.SaidiKasutajaLiik(kasutajaID, Rakendus.RAKENDUSE_KOOD);
            bool submittimiseTulemus = true;

            switch (userRole) { 

                case "Admin":

                 for (int counter = 0; counter < kyik_kasutajad.Count; counter++)
                    {
                        SiteKasutaja kasutajaAndmed = kyik_kasutajad[counter];
                        DropDownList valitudlist = listid[counter];
                        int roll = int.Parse(valitudlist.SelectedValue);
                        // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + roll.ToString() + "\")</SCRIPT>"));

                        sc.MuudaSaidiKasutajaLiik(kasutajaAndmed.Kasutaja_ID, roll, Rakendus.RAKENDUSE_KOOD);
                        if (checkboxid[counter].Checked)
                        {
                            sc.KustutaSaidiKasutaja(kasutajaAndmed.Kasutaja_ID, Rakendus.RAKENDUSE_KOOD);
                        }


                    }

                 break;
                case "Omanik":

                 for (int counter = 0; counter < kyik_kasutajad.Count; counter++)
                 {
                     SiteKasutaja kasutajaAndmed = kyik_kasutajad[counter];
                     DropDownList valitudlist = listid[counter];
                     int roll = int.Parse(valitudlist.SelectedValue);
                     // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + roll.ToString() + "\")</SCRIPT>"));
                     int kohvik_ID =  kasutajaAndmed.KohvikuKasutajaRollid[0].Kohvik_ID;
                     submittimiseTulemus = sc.MuudaKohvikuKasutajaRoll(kasutajaAndmed.Kasutaja_ID, kohvik_ID, roll, Rakendus.RAKENDUSE_KOOD); 
                     
                     if (checkboxid[counter].Checked)
                     {
                        //TODO kustuta kasutaja kohvikust
                     }

                     
                 }

                     break;
            
            } // end switch

            if (submittimiseTulemus)
            {
                Response.Redirect("~/Kohvik/Kasutaja.aspx?user=" + kasutajaID + "&teade=1");
            }
            else {
                Response.Redirect("~/Kohvik/Kasutaja.aspx?user=" + kasutajaID + "&teade=3");
            }
            
        }
        else
        {
            Response.Redirect("~/Kohvik/Kasutaja.aspx?user=" + kasutajaID + "&teade=2");
            // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + "fail" + "\")</SCRIPT>"));
        }

     
       // System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" + kyik_kasutajad[0].Kasutaja_Liik_Nimi + "\")</SCRIPT>"));
        
       //  System.Web.HttpContext.Current.Response.Write(("<SCRIPT LANGUAGE=\"JavaScript\">alert(\""+table.Rows[0].Cells[0].Text+"\")</SCRIPT>"));
    
    
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        hfArv.Value = kyik_kasutajad.Count().ToString();
    }

}